Пора бы уже научиться получать данные из нашего списка. Сделаем в прошлом проекте пункт меню GETITEM и к нему обработчик выбора с помощью ClassWizard:
void CTestListDlg::OnTestGetitem()
{
}
Мы с Вами не сможем получить текст с помощью функции GetText(), посмотрите сами. Поэтому мы в коде по вызову меню вызовем свою функцию из нашего класса CTestList. Вот так, проверив, что выбор сделан.
void CTestListDlg::OnTestGetitem()
{
int i;
i=m_List.GetCurSel();
if (i!=LB_ERR) AfxMessageBox(m_List.GetSelectedString());
else AfxMessageBox("Selected item");
}
Давайте посмотрим, что внутри этой нашей функции GetSelectedString():
CString CTestList::GetSelectedString()
{
LPSTR lp=(LPSTR)GetItemDataPtr(GetCurSel());
return lp;
}
Идея простая мы можем получить указатель на наши данные с помощью функции GetItemDataPtr().
void* GetItemDataPtr ( int nIndex // индекс элемента ) const;
Она возвращает указатель на данные по индексу, если произойдет ошибка, то вернет -1.